package pictureseditor.images;

/**
 * Cette classe explicite un objet image
 */
public class ImageImpl implements Image {

	//ATTRIBUTS//
	
	private char calques[][][];		//calques (profondeur-largeur-hauteur)
	private int profondeur;			//profondeur (nombre de calques)
	private int largeur;  			//largeur
	private int hauteur;			//hauteur
	
	
	//CONSTRUCTORS//
	
	public ImageImpl() {
		// nothing to do
	}
	
	/**
	 * Construit une image de taille profondeur - hauteur - largeur
	 */
	public ImageImpl(int profondeur, int largeur, int hauteur) {
		this.profondeur = profondeur;
		this.largeur = largeur;
		this.hauteur = hauteur;
		calques = new char[profondeur][largeur][hauteur];
	}

	
	//GETTERS//
	
	@Override
	public int getProfondeur() { 
		return profondeur; 
	}
	
	@Override
	public int getLargeur() { 
		return largeur; 
	}
	
	@Override
	public int getHauteur() { 
		return hauteur; 
	}
	
	@Override
	public char[][][] getCalques() {
		return calques;
	}
	
	
	//SETTERS//
	
	@Override
	public void setLargeur(int largeur) {
		this.largeur = largeur;
	}
	
	@Override
	public void setHauteur(int hauteur) {
		this.hauteur = hauteur;
	}
	
	@Override
	public void setProfondeur(int profondeur) {
		this.profondeur = profondeur;
	}
	
	@Override
	public void setCalques(char[][][] calques) {
		this.calques = calques;
	}

	
	//METHODS//
	
	@Override
	public void setPixel(int profondeur, int largeur, int hauteur, char value) { 
		calques[profondeur][largeur][hauteur] = value;
	}
	
	@Override
	public char getPixel(int profondeur, int largeur, int hauteur) { 
		return calques[profondeur][largeur][hauteur]; 
	}

	@Override
	public void changeProfondeur(int profondeur) { 
		this.profondeur = profondeur; 
		this.calques = new char[profondeur][largeur][hauteur];
	}
	
}
